1. The Field of the Invention
The present invention relates to systems and methods for managing distributed applications in a network. More particularly, the present invention relates to systems and methods for delivering and hosting applications that support features of the clients or nodes in the network.
2. Background and Relevant Art
Many homes are receiving content such as television programming and Internet related data from a variety of different broadcast sources. Satellite systems, cable television systems, and computer networks such as the Internet are examples of systems or broadcast sources over which content is received. As different types of content become available, the devices through which this content is accessed (set top boxes and computers) are becoming indistinguishable in the sense that the same set top box that permits a user to view satellite television programming or cable television programming permits the user to browse the Internet. These same set top boxes are often used for email, instant messaging, and other applications such as digital video recording and the like.
As the functionality of set top boxes increases, many homes are beginning to have more than one set top box. For instance, many homes have a set top box for each television set. In order to better manage all of the content that is being received into the home, the content often enters the home through a gateway or a central server computer that is responsible for delivering the content to the various set top boxes (nodes or clients of the central server) in the home. In effect, the home has a small network that connects with outside systems or content sources through the home server computer. The home server computer thus has the responsibility of distributing content to the various nodes or clients of the home network.
Successfully developing applications for the purpose of distributing content throughout a home network to multiple set top boxes from a single server presents several difficulties. In many instances, the various set top boxes either do not correctly implement available standards or they do not implement the standards completely. For example, a particular home may have a satellite set top box on one television and a web browsing set top box on another television. It is likely that that the satellite set top box will not be able to display information or content retrieved from a remote server over the satellite system even though that content may be available to the satellite set top box. In addition, many applications are dependent on a particular system architecture and/or on a particular operating system. Incorrectly implemented standards and dependence on system architectures and operating systems often cause incompatibilities that may result in decreased performance and in unsuccessful delivery of the requested content.
Usually, the central server of a home network is more powerful than the clients or nodes of the home network. Creating a home network in this fashion using less powerful nodes addresses, for example, the issues of cost and distribution of computing load. The cost of a home network to a consumer is reduced because the nodes or clients are not as expensive.
However, the distribution of the computing load between the server and the various nodes is fixed in current networks. This inability to dynamically allocate the resources of a particular node or of the server may result in decreased performance and in a poor user experience. This failure to allocate resources dynamically is complicated by the fact that many applications are designed to execute on a node and are not able to execute on the server. This is significant because in many instances, the server computer is used as if it were a node from some of the household members.
One approach to this problem is a thin client approach. The thin client approach, however, presents a variety of different problems. In a thin client system, for example, the data transport is often accomplished using a graphics device interface (GDI), which effectively draws an object by sending commands to the screen that actually renders the object. GDI, in other words, abstracts the communication between a node and the central server to the level of drawing commands and bitmaps.
This presents several problems. First, future nodes are required to conform to a user interaction that is based on a bitmapped display and any code executing on the node will not be able to properly position video with respect to other content. Additionally, a GDI interface is impractical for other types of nodes. A pure audio node, for example, does not need GDI and is not possible in this scenario.
A thin client solution does not take advantage of the ability to leverage distributed processing. When the distribution between the node and the server is fixed, then increased processing power at the server is not efficiently utilized. This becomes apparent, for instance, as the processor speed increases. Also, the resources of the server become increasingly taxed as the number of nodes in a system increases.
A thick client approach, on the other hand, also suffers from various problems. In recent years, applications have been developed with a client/server or web browser/web server architecture in mind. Developing applications in this manner is efficient because work can be easily divided between software developers and graphic designers. A thick client does not take advantage of this proven development model. Binding applications with each thick client also reduces the ability to change or add partners during development as the look and feel of a particular product is hard to change.
Systems and methods for distributing content and for developing applications that are scalable and distributable are needed.